package jdk8.optional;

import java.util.Objects;
import java.util.Optional;

import org.junit.Test;

public class OptionalDemo {
	@Test
	public void npe1() {
		// NullPointerException
		String str = null;
		// 1. 使用之前判断
		if (str != null) {
			str.length();
		}
	}
	
	@Test
	public void npe2() {
		// NullPointerException
		String str = null;
		// 1. 使用之前判断
		if (Objects.nonNull(str)) {
			str.length();
		}
	}
	
	@Test
	public void npe3() {
		// 1.创建对象
		String str =  null;
		// 2.把此对象添加到Optional(可选的)
			//2.1 如果of(obj), 不能为空，否则直接NPE   Objects.requireNonNull(value)
			// Optional<String> opt = Optional.of(str);
			//2.2 ofNullable(obj) 可以为空
		 Optional<String> opt = Optional.ofNullable(str);
		 // 3.判断是否有值, 如果str不为空
		 if (opt.isPresent()) {
			 // 返回str的值
			 String value = opt.get();
			 System.out.println(value);
		 } else {
			 // 如果str不为空，返回str,否则返回默认参数
			String value = opt.orElse("world");
			System.out.println(value);
		 }
	}
}
















